#pragma once
#include "Binding/BoundExpression.hpp"
#include "Binding/BoundNode.hpp"
#include "BoundUnaryOperator.hpp"
#include <vector>

class BoundUnaryExpression : public BoundExpression
{
public:
    SharedBoundUnaryOperator Op;
    SharedBoundExpression    Operand;

public:
    BoundUnaryExpression(SharedBoundUnaryOperator op, SharedBoundExpression operand)
        : BoundExpression(BoundNodeKind::UnaryExpression, op->Type), Op(op), Operand(operand)
    {
    }

public:
    virtual std::vector<SharedBoundNode> GetChildren() { return {this->Operand}; }
};